home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / LIBRARY / TOOLPAS2 / QSTAT.PAS < prev    next >
Pascal/Delphi Source File  |  1990-10-24  |  3KB  |  128 lines

  1.  
  2. program demo;
  3.  
  4. uses dos;
  5.  
  6. function ltos(l: longint): string;
  7. var
  8.    b:    string[20];
  9.    b1:   string[20];
  10.    i:    integer;
  11. begin
  12.    str(l:20,b);
  13.  
  14.    b1 := '';
  15.    for i := 1 to 20 do         {insert commas}
  16.    begin
  17.       if b[i] <> ' ' then
  18.       begin
  19.          if (b1 <> '') and ((i mod 3) = 0) then
  20.             b1 := b1 + ',';
  21.          b1 := b1 + b[i];
  22.       end;
  23.    end;
  24.  
  25.    ltos := b1;
  26. end;
  27.  
  28. type
  29.    asciiz_type =       string [255];
  30.    cardinal =          integer;
  31.  
  32. {$i cache.inc}
  33.    
  34. var
  35.    reg:                registers;
  36.    system_info:        system_status_type;
  37.    drive_info:         all_drive_status_type;
  38.    drive_index:        drive_index_type;
  39.    
  40. {==============================================================================}
  41.  
  42. procedure fetch_cache_status;
  43. begin
  44.    reg.ax := $3000;
  45.    reg.ds := dseg;
  46.    reg.dx := ofs (system_info);
  47.    intr($13, reg);
  48.  
  49.    reg.ax := $3001;
  50.    reg.dx := ofs (drive_info);
  51.    intr($13, reg);
  52. end;
  53.  
  54.  
  55.  
  56. {==============================================================================}
  57.  
  58. procedure show_status_line;
  59. var
  60.    n: integer;
  61.  
  62. begin
  63.    fetch_cache_status;
  64.  
  65.    writeln;
  66.    writeln('         Active   Dirty    Errors       Read      Reads       Write    Delayed');
  67.    writeln(' Drive   Blocks  Blocks    R    W       I/Os      Saved       I/Os     Writes');
  68.    writeln(' -----  ------- -------  ---- ----  ----------- --------  ----------- --------');
  69.  
  70.    for n := 0 to 15 do
  71.    with drive_info[n] do
  72.    if in_use or (rio_count > 0) then
  73.    begin
  74.       write('   ',
  75.             chr(dos_drive+ord('A')),':',
  76.             ltos(sectors_assigned):9,
  77.             ltos(dirty_sectors):8,
  78.             ltos(read_error_count):6,
  79.             ltos(write_error_count):5,
  80.             ltos(rio_count):13);
  81.  
  82.       if rio_count = 0 then
  83.          write('0 %':9)
  84.       else
  85.          write(int(rio_count-miss_count)/int(rio_count)*100:7:0,' %');
  86.  
  87.       write(ltos(wio_count):13);
  88.       if wio_count = 0 then
  89.          write('0 %':9)
  90.       else
  91.          write(int(dio_count)/int(wio_count)*100:7:0,' %');
  92.  
  93.       writeln;
  94.    end;
  95. end;
  96.  
  97.  
  98. {==============================================================================}
  99. begin
  100.    reg.ax := 39 * 256;
  101.    reg.bx := 0;
  102.    reg.cx := 0;
  103.    reg.dx := 0;
  104.    intr($13, reg);
  105.    
  106.    if reg.bx = 0 then
  107.    begin
  108.       writeln('QUICKCACHE not installed.');
  109.       halt;
  110.    end;
  111.  
  112.    {==============================================================================}
  113.    { Set up initial configuration }
  114.    {==============================================================================}
  115.  
  116. (*******
  117.     enable_cache;
  118.     enable_bufferedwrite;
  119.     enable_bufferedread;
  120.     set_flush_interval(0);
  121.     set_flush_count(0);
  122.     set_sectors(200);
  123. *******)
  124.  
  125.    show_status_line;
  126. end.
  127.  
  128.